Queueing

큐Queue는 대기열이라는 뜻이다.
즉, 큐잉Queueing은 대기열을 걸어줌으로써, 패킷 처리 속도를 조절하겠다는 의도를 갖는다.

이러한 속도조절이 왜 필요할까?
그야, 패킷이 도착하자마자 처리되는게 아니기 때문이다.
도달한 패킷의 헤더를 읽고, 포워딩과 스위칭을 하는데에도 시간이 들고, 스위칭된 데이터를 보내는데에도 지연시간이 필요하기 때문이다. 이러한 패킷들을 순서대로 처리하기 위해 사용하는 것이 바로 큐이다.


Buffer Overflow

만약, 패킷을 처리하는 속도가 충분히 빠르지 않다면 어떻게 될까?
큐에 패킷들이 쌓이다가, 큐가 꽉찬다면, 도달한 패킷이 대기열에 저장되지 못하고 버려지는 불상사가 벌어질 것이다. 이것을 Buffer Overflow라고 한다.

Head-of-the-Line (HOL) blocking

큐는 기본적으로 선입선출FIFO의 구조를 지닌다. 그렇다면, 먼저 도착한 패킷이 아주 커서 처리하는데 시간이 너무 오래걸린다면 어떨까? 뒤에 있는 자잘한, 아주 빠르게 처리될 수 있는 패킷조차 심하게 느려지는 불상사가 발생한다. 이것을 HOL 블로킹 문제라고 한다.

스위치에서는 다른 방식으로 HOL 블로킹이 발생한다. 스위치는 여러개의 입력포트와 출력포트를 갖는데, 각각의 패킷들은 지나야할 포트가 서로 다르다. 그런데 각 포트도 한번에 하나씩 처리되는 일종의 큐이다. 이때, 하나의 입력 포트에서 앞 패킷이 어떤 인기많은 출력포트를 기다리고 있다면, 뒤의 패킷은 다른 인기없는 출력포트를 이용함에도 불구하고, 앞선 패킷이 처리되기를 기다려야 하는 문제를 갖는다.

Packet Scheduling

FCFS (FIFO)

우리가 뻔히 아는 그 방법. FCFS는 first-come-first-served의 준말로 first-in-first-out과 동일한 의미.

Priority Queueing